/*
    This is a set of libraries to assist in OpenGl and Other Applications
    Copyright (C) 2008  The Modular Engine Team

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef HUDBUTTON_H
#define HUDBUTTON_H
#include "EngineCore.h"
#include "OpenglModule.h"
#include "HUDElement.h"
#include "HUDModule.h"
// Button element

namespace ModularEngine
{
	class CLASSDECL HUDButton: public HUDElement
	{
	protected:
		Functor *mtFunc; // Functor executed when button is released.
		char *mpButtonText; // Button's text

	public:
		// Set everything up, even before initialization.
		HUDButton();
		~HUDButton();

		// Initialize the button
		int initialize();
		// Draw the button
		void draw();		

		// Deal with mouse clicks.
		void mouseInput( Vector2d vPos, unsigned int nDown );

		void keyboardInput( UINT nKey );

		// Sets the functor which the button will call when released
		void setCallFunc( Functor *c );

		// Sets the text for the button
		void buttonText( char *text )
		{
			mpButtonText = new char[strlen(text)+1];
			strcpy( mpButtonText, text );
		}

	};

}

#endif
